package cyvra;
import java.sql.*;
import java.util.logging.*;
import javax.swing.JOptionPane;

/**
 *
 * @author CARDENASVAR
 */
public class clsConnection {
    
    // Variable de Conexion
    static Connection oConnection; 
    
    //Variable para los Query's
    Statement sqlStmt;
    
    //Variable para los Resultados
    ResultSet setResult;
    int        intResult;

    
    
    //Funcion Para Realizar La Conexion
    boolean FnBoolConnetionOpen(String strConnector,String strHost,String strUser,String strPassword)
    {
        try
        {
            //Registra y Prepara el Conector
            Class.forName(strConnector);
            
            //Intenta la Conexion
            oConnection = DriverManager.getConnection(strHost,strUser,strPassword);
            
            //Retorna Verdadero
            return true;
        }
        catch(Exception e)
        {
        
            //Ocurrio una Excepcion la cual imprime 
            //e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.toString());
            
            //Retorna Falso
            return false;
        }
    }
    
    
    void SubConnectionClose()
    {
        try
        {
            //Cierra La Conexion 
            oConnection.close();
        }
        catch(Exception e)
        {
            //e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.toString());
        }
    }
    
    // Procedimiento para Ejecutar un Query form 4
    boolean FnBoolQueryExecute(String strQuery)
    {
        // Captura el Error
        try 
        {
            // Crea el Objeto para el Query
            sqlStmt = oConnection.createStatement();            
        } 
        catch (Exception e) 
        {
            // Mensaje de Error
            JOptionPane.showMessageDialog(null,"Error SubQueryExecute:createStatement:"+e.getMessage());
            
            //Debuger
            e.printStackTrace();            
            
            // retorna false
            return false;
        }
        try 
        {
            setResult= sqlStmt.executeQuery (strQuery);            
            
            // Retorna que pudo ejecutar
            return true;
            
        } 
        catch (Exception e) 
        {
            // Mensaje de Error
            JOptionPane.showMessageDialog(null,"Error SubQueryExecute:executeQuery:"+e.getMessage());               
            
            // Degugger
            e.printStackTrace();            
            
            // Retorna false
            return false;
        }
    }
    
    
    //Sub-rutina form 3
    void SubQueryExecute (String strQuery)
    {
        try
        {
            //Crea el Objeto para el Query
            sqlStmt = oConnection.createStatement();
        }
        catch (Exception e)
        {
            //e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.toString());
        }
        try
        {
            //Ejecuta el Query y Obtiene resultados
            setResult = sqlStmt.executeQuery(strQuery);
        }
        catch(Exception e)
        {
            //e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.toString());
        }
        
    }
  
    //para borrar datos de la base de datos
    boolean FnBoolQueryExecuteUpdate(String strQuery)
    {
        // Captura el Error
        try 
        {
            // Crea el Objeto para el Query
            sqlStmt = oConnection.createStatement();            
        } 
        catch (Exception e) 
        {
            // Mensaje de Error
            JOptionPane.showMessageDialog(null,"Error SubQueryExecuteUpdate:createStatement:"+e.getMessage());
            
            //Debuger
            e.printStackTrace();            
            
            // retorna false
            return false;
        }
        try 
        {
            // ejecuta el Update
            intResult =sqlStmt.executeUpdate(strQuery);            
            
            // Retorna que pudo ejecutar
            return true;
            
        } 
        catch (Exception e) 
        {
            // Mensaje de Error
            JOptionPane.showMessageDialog(null,"Error SubQueryExecuteUpdate:executeQuery:"+e.getMessage());               
            
            // Degugger
            e.printStackTrace();            
            
            // Retorna false
            return false;
        }
    }
    
    //inicia una transaccion
    void SubAutoCommit (boolean bCommit)
    {
        //coloca el modo de la transaccion
        try
        {
            oConnection.setAutoCommit(bCommit);
        }
        catch (SQLException ex)
        {
            //genera el logger
            Logger.getLogger(clsConnection.class.getName()).log(Level.SEVERE, null, ex);
            
            // mensaje de error
            JOptionPane.showMessageDialog(null, "Error voidAutoCommit");
        }
    }
    
    //procedimiento para que en caso de error se dejen las tablas de la base de datos tal y como estan
    void SubRollBack()
    {
        try
        {
            oConnection.rollback();
        }
        catch (SQLException ex)
        {
            //grabar el logger
            Logger.getLogger(clsConnection.class.getName()).log(Level.SEVERE, null, ex);
            
            //mensaje de error
            JOptionPane.showMessageDialog(null, "Error RollBack");
        }
    }
    
    void SubCommit()
    {
        try
        {
            oConnection.commit();
        }
        catch (SQLException ex)
        {
            //graba el logger
            Logger.getLogger(clsConnection.class.getName()).log(Level.SEVERE, null, ex);
            
            //mensaje de error
            JOptionPane.showMessageDialog(null, "Error Commit");
        }
    }
    
}
  
